home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS069.dsk
/
HI Q.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
5KB
|
161 lines
1 CALL -936
3 POKE 33,39
4 POKE 34,0
5 CALL -936
7 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT :
10 PRINT TAB( 15);"HI-Q"
15 PRINT
20 PRINT TAB( 5 );"BOB STEVENS DALLAS TEXAS"
30 PRINT : PRINT : PRINT
35 PRINT : INPUT "INSTRUCTIONS";Q$: GOSUB 285
36 IF Q$ = "NO" OR Q$ = "N" THEN 55
37 PRINT : PRINT : PRINT
38 PRINT "THE OBJECT OF HI-Q IS TO REMOVE ALL": PRINT
39 PRINT "32 PEGS, OR AS MANY AS POSSIBLE, BY": PRINT
40 PRINT "JUMPING INTO AN EMPTY HOLE...": PRINT
41 PRINT "THE JUMPED PEG IS THEN REMOVED.": PRINT
43 PRINT "TO SAVE TYPING TIME, A COMPRESSED": PRINT
44 PRINT "VERSION OF THE GAME BOARD WILL BE USED": PRINT
45 PRINT "DURING PLAY. REFER TO THE ONE ON THE": PRINT
46 PRINT "RIGHT SIDE FOR PEG NUMBERS": PRINT : PRINT
47 PRINT : INPUT "READY";T$
48 IF T$ = "YES" OR T$ = "Y" THEN 55
49 PRINT "WELL, WHEN YOU'RE READY JUST TYPE 'YES'": GOTO 47
55 PRINT : PRINT "HERE IS THE BOARD:"
60 PRINT " ! ! !"
70 PRINT " 13 14 15": PRINT
80 PRINT " ! ! !"
90 PRINT " 22 23 24": PRINT
100 PRINT " ! ! ! ! ! ! !"
110 PRINT " 29 30 31 32 33 34 35": PRINT
120 PRINT " ! ! ! ! ! ! !"
130 PRINT " 38 39 40 41 42 43 44": PRINT
140 PRINT " ! ! ! ! ! ! !"
150 PRINT " 47 48 49 50 51 52 53": PRINT
160 PRINT " ! ! !"
170 PRINT " 58 59 60": PRINT
180 PRINT " ! ! !"
190 PRINT " 67 68 69": PRINT
240 POKE 33,17
241 POKE 34,8
280 REM *** SET UP BOARD
281 DIM B(70),T(9,9)
284 GOTO 287
285 CALL -936
286 RETURN
287 GOSUB 285
288 PRINT "LET'S BEGIN"
290 FOR R = 1 TO 9
300 FOR C = 1 TO 9
310 IF (R -4) *(R -5) *(R -6) = 0 THEN 400
320 IF (C -4) *(C -5) *(C -6) = 0 THEN 400
350 T(R,C) = -5
360 GOTO 500
400 IF (R -1) *(C -1) *(R -9) *(C -9) = 0 THEN 350
420 T(R,C) = 5
500 NEXT C
600 NEXT R
650 T(5,5) = 0: GOSUB 5000
700 REM *** INPUT MOVE AND CHECK LEGALITY
750 FOR W = 1 TO 33
770 READ M
790 DATA 13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41
810 DATA 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69
830 B(M) = -7: NEXT W
860 B(41) = -3
1000 INPUT "MOVE WHICH PIECE";Z
1100 IF B(Z) = -7 THEN 1400
1200 PRINT "ILLEGAL MOVE, TRY AGAIN...": GOTO 1000
1400 INPUT "TO WHERE"; P
1500 IF B(P) = 0 THEN 1200
1530 IF B(P) = -7 THEN 1200
1560 IF Z = P THEN 1000
1600 IF ((Z +P)/2) = INT((Z +P)/2) THEN 1800
1615 PRINT : INPUT "PLAY AGAIN (YES OR NO)";A$
1617 IF A$ = "NO" OR A$ = "N" THEN 20000
1700 GOTO 1200
1800 IF ( ABS(Z -P) -2) *( ABS(Z -P) -18) < >0 THEN 1200
1900 GOSUB 10000
2000 GOSUB 5000
2100 GOSUB 15000
2200 GOTO 1000
5000 REM *** BOARD
5100 FOR X = 1 TO 9
5200 FOR Y = 1 TO 9
5250 IF (X -1) *(X -9) *(Y -1) *(Y -9) = 0 THEN 5500
5300 IF (X -4) *(X -5) *(X -6) = 0 THEN 5700
5400 IF (Y -4) *(Y -5) *(Y -6) = 0 THEN 5700
5500 REM
5600 GOTO 6100
5700 IF T(X,Y) < >5 THEN 6000
5800 PRINT TAB( Y *1);"+";
5900 GOTO 6100
6000 PRINT TAB( Y *1);"O";
6100 REM
6150 NEXT Y
6200 PRINT
6300 NEXT X
6400 RETURN
10000 GOSUB 285
10050 C = 1: FOR X = 1 TO 9
10200 FOR Y = 1 TO 9
10300 IF C < >Z THEN 12200
10400 IF C +2 < >P THEN 10800
10450 IF T(X,Y +1) = 0 THEN 1200
10500 T(X,Y +2) = 5
10600 T(X,Y +1) = 0: B(C +1) = -3
10700 GOTO 12000
10800 IF C +18 < >P THEN 11300
10850 IF T(X +1,Y) = 0 THEN 1200
10900 T(X +2,Y) = 5: T(X +1,Y) = 0: B(C +9) = -3
11200 GOTO 12000
11300 IF C -2 < >P THEN 11700
11350 IF T(X,Y -1) = 0 THEN 1200
11400 T(X,Y -2) = 5: T(X,Y -1) = 0: B(C -1) = -3
11600 GOTO 12000
11700 IF C -18 < >P THEN 12200
11750 IF T(X -1,Y) = 0 THEN 1200
11800 T(X -2,Y) = 5: T(X -1,Y) = 0: B(C -9) = -3
12000 B(Z) = -3: B(P) = -7
12100 T(X,Y) = 0: GOTO 12400
12200 C = C +1
12250 NEXT Y
12300 NEXT X
12400 RETURN
15000 REM *** CHECK IF GAME IS OVER
15050 F = 0
15100 FOR R = 2 TO 8
15200 FOR C = 2 TO 8
15300 IF T(R,C) < >5 THEN 15800
15350 F = F +1
15400 FOR A = R -1 TO R +1
15450 T = 0
15500 FOR B = C -1 TO C +1
15600 T = T +T(A,B)
15610 NEXT B
15640 IF T < >10 THEN 15670
15650 IF T(A,C) < >0 THEN 16300
15670 NEXT A
15680 FOR X = C -1 TO C +1
15690 T = 0
15700 FOR Y = R -1 TO R +1
15710 T = T +T(X,Y)
15720 NEXT Y
15730 IF T < >10 THEN 15750
15740 IF T(R,X) < >0 THEN 16300
15750 NEXT X
15800 NEXT C
15900 NEXT R
16000 REM *** GAME IS OVER
16050 PRINT "THE GAME IS OVER."
16100 PRINT "YOU HAD";F;"PIECES REMAINING."
16105 TEXT
16110 IF F < >1 THEN 16150
16120 PRINT "BRAVO! YOU MADE A PERFECT SCORE!"
16150 PRINT : INPUT "PLAY AGAIN (YES OR NO)";A$
16170 IF A$ = "NO" OR A$ = "N" THEN 20000
16180 RESTORE : GOTO 280
16200 STOP
16300 RETURN
20000 PRINT : PRINT "SO LONG FOR NOW": PRINT
20100 END